在 Laravel 的請求生命週期中,有一個很重要的流程是設定 Service Provider ,現在這個流程你知我知獨眼龍也知,但講了這麼久到底什麼是 Service Provider 呢,讓我們來看看官方文件怎麼說,
Service providers are the central place of all Laravel application bootstrapping.
再說白一點,我們在開發時所用到的那些便利的特性包含服務容器綁定、事件監聽器、中介層,甚至路由。都是在這裡設定並引入的。
當然除了上述這些預設的功能外,我們也可以客製自己的 Service Provider ,譬如來綁定某個 interface 的實例,可以在開發上更為便利
首先可以透過 Artisan command line 來建立一個 Service Provider
php artisan make:provider RiakServiceProvider
再來利用透過建立的檔案中 register function 裡去設定欲實例化的 interface,
<?php
namespace App\Providers;
use Riak\Connection;
use Illuminate\Support\ServiceProvider;
class RiakServiceProvider extends ServiceProvider
{
/**
* 在容器中註冊綁定。
*
* @return void
*/
public function register()
{
$this->app->singleton(Connection::class, function ($app) {
return new Connection(config('riak'));
});
}
}
接著要在 config/app.php 此設定檔中註冊。
'providers' => [
App\Providers\AppServiceProvider::class,
],
這樣子下次在透過 Connection::class 進行依賴注入,就能自動解析裡面內容。